package com.ocom.payconfig.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ocom.common.entity.card.EntityXfAccountInfo;
import com.ocom.common.entity.card.EntityXfRecordProcess;
import com.ocom.common.vo.pay.ABCRechargeVo;
import com.ocom.common.vo.pay.UpdateListRechargeVo;
import com.ocom.common.vo.pay.UpdateSubsidyVo;
import com.ocom.payconfig.vo.GetListRechargeRVo;
import com.ocom.payconfig.vo.GetListRechargeVo;

import java.util.Date;
import java.util.List;

//账户类型
public interface XfAccountInfoService extends IService<EntityXfAccountInfo> {

    //获取账号信息(getXFAccount)
    public EntityXfAccountInfo GetXFAccount(Long comId, Integer pId,Integer accountState);

    //初始化账号(addXFAccount)
    public void AddXFAccount(Long comId, EntityXfAccountInfo entityXfAccountInfo);


    // 修改账号信息(updateXFAccount)
    public void UpdateXFAccount(Long comId, EntityXfAccountInfo entityXfAccountInfo);

    //判断账户号唯一
    public EntityXfAccountInfo selectAccountNo(Long comId, String accountNo);

    /**
     * 获取账号明细（getListRecharge）
     *
     * @return*/
    public List<GetListRechargeRVo> GetListRecharge(Long comId, GetListRechargeVo getListRechargeVo);

    /**
     * 个人账户充值（updateListRecharge）
     *
     * @return*/
    Boolean UpdateListRecharge(Long comId, UpdateListRechargeVo updateListRechargeVo);

    /**
     * 个人补贴充值（updateSubsidy）
     *
     * @return*/
    Boolean updateSubsidy(Long comId, UpdateSubsidyVo updateSubsidyVo);


    // 修改账号信息(updateXFAccount)
    public Boolean sign(Long companyId, Long pId , Integer signType, String signNo);

    Boolean abcRecharge(Long comId, ABCRechargeVo updateListRechargeVo);

    List<EntityXfAccountInfo> selectAccountList(Long comId);

    EntityXfAccountInfo getAccount(Long comId, Integer pId);

    Boolean updatesubsid(Long comId, Integer planId, Integer completeMoney, Long clearMoney, Date date, Integer id);

    void updateAccountTransactional(Long companyId, Integer id, EntityXfRecordProcess entityXfRecordProcess, EntityXfRecordProcess updateXfRecordProcess);

    List<EntityXfAccountInfo> selectAccountInfos(Long companyId, Date endDate);

    List<EntityXfAccountInfo> selectAccountInfosNotice(Long companyId, List<Long> comIds , Date endDate);
}
